假设表中元素是按升序排列
> 讲查找范围的中间位置的值mid和目标元素x作比较,利用中间位置将表分成钱、后两个子表。
>
> * 如果 查找范围中间值==目标元素,则查找成功;
> * 如果 目标元素<朝招范围的中间值,则查找范围缩小到前——子表
> * 如果 查找范围的中间值<目标元素,则查找范围缩小到子表
>
> 重复以上过程,直到找到目标元素,则查找成功,或者直到子表不存在为止,此时查找不成功。
LOWER_BOUND()
> lower_bound 使用二分查找算法来寻找序列中第一个大于或等于指定值的元素。该函数将返回一个指向该元素的地址。如果没有找到符合条件目标的元素,它将返回超过范围的位置。头文件<algorithm>
>
> lower_bound(a+1,a+n+1,x)-a;
> 地址不建议直接输出,如果要得到下表可以与首地址做差。
二分答案
> 二分答案与二分查找类似,二分查找有一个前提就是数列要求是有序的,二分答案则是要求满足条件的答案是单调有序的,它的基本思想是在答案可能的范围([L,R])内二分查找答案,不断检查当前答案是否满足题目的要求,根据检查结果更新查找的区间,最终取得最符合要求的答案进行输出。
图
> 是一种由顶点和边组成的数据结构,其中顶点表示图中的对象,边表示这些对象之间的关系。
> 定义一维数组v[ ]用以存储顶点信息,v[i]表示编号为i的顶点。
> 定义二维矩阵g[ ][ ]应以存储图中边的信息,g[i][i]表示顶点i到顶点j这条边。
邻接表
> 构造一个成都喂顶点个数的vector数组apple[ ],`对于apple[i],存储顶点i的所有数据(邻接点)
>
> * 无向图中:它的边关联的其顶点
> * 有向图中:它的出边的中点